package com.explorati.design_pattern.hybrid.strategyfactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//模拟交易类
public class Client {

	public static void main(String[] args) {
		// 初始化一张卡
		Card card = new Card("100010", 300, 500);
		System.out.println("===========IC卡初始信息=============");
		card.showCard();
		// 接收用户选择，初始化为N
		String choice = "N";
		// 只要用户选择的不是y或Y，就一直循环，否则退出系统
		while (!choice.equalsIgnoreCase("y")) {
			// 创建一个交易对象
			Trade trade = new Trade();
			// 根据交易编号来选择策略 若前三个数字为0则为固定金额交易，否则为自由金额交易
			System.out.println("请输入交易编号：");
			trade.setTradeNo(getInput());
			System.out.println("请输入交易金额：");
			trade.setAmount(Double.parseDouble(getInput()));
			// 进行交易，执行扣款操作
			DeductionFacade.deduct(card, trade);
			// 显示交易后IC卡中的信息
			card.showCard();
			System.out.println("是否退出系统？(Y/N)：");
			choice = getInput();
		}
	}

	public static String getInput() {
		String str = "";
		try {
			str = (new BufferedReader(new InputStreamReader(System.in))).readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
}
/**
 * ===========IC卡初始信息=============
	IC卡号：100010
	固定金额：300.0
	自由金额：500.0
	请输入交易编号：
	100010
	请输入交易金额：
	200
	=============交易凭证=================
	100010交易成功！
	交易金额为：￥200.0
	====================================
	IC卡号：100010
	固定金额：300.0
	自由金额：300.0
	是否退出系统？(Y/N)：
	N
	请输入交易编号：
	000222
	请输入交易金额：
	200
	=============交易凭证=================
	000222交易成功！
	交易金额为：￥200.0
	====================================
	IC卡号：100010
	固定金额：100.0
	自由金额：300.0
	是否退出系统？(Y/N)：
		n
	请输入交易编号：
	21100
	请输入交易金额：
	100
	=============交易凭证=================
	21100交易成功！
	交易金额为：￥100.0
	====================================
	IC卡号：100010
	固定金额：100.0
	自由金额：200.0
	是否退出系统？(Y/N)：
	Y
*/
